package co.gov.medellin.ssti.sub.model.dao;

import java.io.UnsupportedEncodingException;
import java.util.Collection;

import co.gov.medellin.ssti.sub.model.vo.CargueVO;
import co.gov.medellin.ssti.sub.model.vo.RegNoProcesadosVO;

public interface CargueDAO {
	/**
	 * 
	 * @param criteria
	 * @return
	 * 
	 */
	Collection<CargueVO> findArchivoCargueByCriteria(CargueVO criteria);

	/**
	 * 
	 * @param codeLote
	 * @return
	 * 
	 */
	String[] findTotalRegistrosByCodigoLote(String codeLote);

	/**
	 * 
	 * @param criterea
	 * @param user
	 * @param terminal
	 * @param fecha
	 * @return
	 * 
	 */
	String[] ingresarCargue(CargueVO criterea, String user, String terminal,
			String fecha);

	/**
	 * 
	 * @param codeUser
	 * @param nameUser
	 * @param groupUserName
	 * @param codeLote
	 * @return
	 * 
	 */
	boolean validateDelete(Long codeUser, String nameUser,
			String groupUserName, String codeLote);

	/**
	 * 
	 * @param codeLoteCargue
	 * @param fileData
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	int uploadFile(int codeLoteCargue, byte[] fileData)
			throws UnsupportedEncodingException;

	/**
	 * 
	 * @param codeLoteCargue
	 * @param tipoCargue
	 * @param user
	 * @param terminal
	 * @param usrGroup
	 * @param usrCode
	 * @return
	 * 
	 */
	boolean moveToCargarDatos(int codeLoteCargue, String tipoCargue,
			String user, String terminal, String userGroup, String userCode);

	/**
	 * 
	 * @param codeLoteCargue
	 * @return
	 * 
	 */
	boolean deleteFile(int codeLoteCargue);

	/**
	 * Metodo que consulta los registros en paoyer.tcs_api_cargue con estado =
	 * 'E', y correspondientes a un lote y un tipo.
	 * 
	 * @param lote
	 *            Codigo del lote (lca_codigo) en paoyer.tcs_api_cargue.
	 * @param tipo
	 *            "BENEFICIARIOS" o "BENEFICIOS".
	 * @return
	 * 
	 */
	Collection<RegNoProcesadosVO> findRegistrosNoProcesados(String lote,
			String tipo);

	/**
	 * Metodo que
	 * 
	 * @param codeLote
	 * @return
	 * 
	 */
	int deleteCargue(String codeLote);

	/**
	 * 
	 * @param codeLote
	 * @return
	 */
	int deleteCargueEmpresa(String codeLote);
}
